package com.pj.project.wx.wx_card;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pj.project.sys_dict.entity.SysDictData;
import com.pj.project.sys_dict.mapper.SysDictDataMapper;
import com.pj.project4sp.SP;
import com.pj.utils.sg.AjaxError;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * Service: sys_user -- 用户表
 * 
 * @author kong
 * @since 2022-11-25
 */
@Service
@Slf4j
public class WxCardService extends ServiceImpl<WxCardMapperw, WxCard> {

	/** 底层 Mapper 对象 */
	@Autowired
	WxCardMapperw wxCardMapper;

	/** 新增用户，返回新增的用户对象 */  
	@Transactional(rollbackFor = Exception.class)
	public WxCard InIt(WxMpXmlMessage wxMpXmlMessage) {
		// 复制微信消息到实体类
		WxCard wxCard = new WxCard();
		try {
			// 使用BeanUtils进行属性拷贝
			BeanUtils.copyProperties(wxMpXmlMessage, wxCard);
		} catch (Exception e) {
			// 在拷贝属性时捕获异常
			e.printStackTrace();
		}

		//  写入数据库 并且返回
		return this.add(wxCard);
	}

	/** 新增用户，返回新增的用户对象 */
	@Transactional(rollbackFor = Exception.class)
	public WxCard add(WxCard s) {
		// 写入数据库
		wxCardMapper.add(s);

		// 查询
		WxCard s2;
		if (s.getId() == null || s.getId() == 0) {
			s2 = wxCardMapper.getById(SP.publicMapper.getPrimarykey());
		} else {
			s2 = wxCardMapper.getById(s.getId());
		}

		//  返回
		return s2;
	}


	/** 修改用户，返回修改的用户对象 */  
	@Transactional(rollbackFor = Exception.class)
	public WxCard update(WxCard s){
		
		// 修改 
		int line = wxCardMapper.update(s);
		AjaxError.notLine(line, "修改失败, 数据可能并不存在");

		
		//  返回最新对象  
		return wxCardMapper.getById(s.getId());
	}

	/** 更新时间 */
	@Transactional(rollbackFor = Exception.class)
	public WxCard updateTime(WxCard s){

		// 修改
		int line = wxCardMapper.updateTime(s.getUserCardCode());
		AjaxError.notLine(line, "修改失败, 数据可能并不存在");


		//  返回最新对象
		return wxCardMapper.getByOpenId(s.getFromUser());
	}

}
